package com.dubboxml.gmail;

import com.alibaba.dubbo.config.ApplicationConfig;
//import com.alibaba.dubbo.config.spring.ReferenceBean;
import org.springframework.context.annotation.Bean;
import org.springframework.core.annotation.Order;

import javax.annotation.Resource;
import java.util.List;


public class ConvertT<T> {

//    @Resource
//    private ApplicationConfig applicationConfig;
//    /**
//     * 将dubbo的所有的远程接口放到set中,在这这个集合中存放着所有的api接口
//     *
//     * @return
//     */
//    @Bean
//    @Order(1)
//    public Map<String, IService<T>> referenceServices() throws Exception {
//        //获取common项目中所有接口
//        System.out.println("扫描包:" + slaveSchedulerConfig.getDubboConfig().getPackageName());
//        //获取扫描包下所有的接口文件
//        List<Class<?>> list = ClassUtils.getClasses(slaveSchedulerConfig.getDubboConfig().getPackageName());
//        System.out.println("获取到文件:" + list.size());
//        //dubbo远程调用的接口集合API接口的集合
//        Map<String, IService<T>> services = new HashMap<>();
//        for (Class<?> name : list) {
//            //在部署的时候,扫描会将旗下的类也扫到,需要排除
//            if (name.getName().endsWith("Impl")) {
//                continue;
//            }
//            System.out.println("生成远程调用的接口:" + this.getClass().getSimpleName() + "--<>--" + name);
//            ReferenceBean<T> bean = new ReferenceBean<>();
//            bean.setUrl(slaveSchedulerConfig.getDubboConfig().getMasterUrl());
//            bean.setInterface(name);
//            bean.setCheck(false);
//            bean.setValidation("true");
//            //这里需要配置config,不然会报错
//            bean.setApplication(applicationConfig);
//            //实际上每个api接口都继承了IService这个接口
//            IService<T> o = (IService<T>) bean.getObject();
//            services.put(name.getName(), o);
//        }
//        return services;
//    }
}
